package com.carbon.carbonmanager.mapper;

import com.carbon.carbonmanager.model.EnterpressInfo;
import com.carbon.carbonmanager.model.IndustryInfo;
import com.carbon.carbonmanager.model.UserInfo;
import com.carbon.carbonmanager.unit.Pager;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.mapping.StatementType;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 企业信息管理模块
 * 也可以是开户模块
 * */
@Mapper
@Component
public interface EnterpressMapper {
    /**
     * 查询所有企业所属行业分类
     * */
    public List<IndustryInfo> getAllIndustry();

    /**
     * 添加企业信息用户开户申请
     * @return 返回值是error的值，如果为0则执行成功
     * */
//    @Select("CALL ApplyAccount(#{enter_name},#{enter_phone},#{enter_fax},#{industry_id},#{enter_address},#{enter_intro},#{user_id})")
//    @Options(statementType = StatementType.CALLABLE)
    public Integer ApplyAccount(EnterpressInfo enterpressInfo);

    /**
     * 验证账户开户状态
     * @param user_id
     * */
    public UserInfo validateApplyAccount(EnterpressInfo enterpressInfo);

    /**
     * 如果当前用户状态已开通，则根据用户id关联查询企业数据信息
     * */
    public EnterpressInfo getEnterInfoByUserId(EnterpressInfo enterpressInfo);

    /**
     * 获取开户申请中的企业信息数据列表
     * */
    public List<EnterpressInfo> getApplyingEnterprise();

    /******************************************************
     * 获取开户申请中的企业信息分页数据1
     * 获取分页数据包含查询
     * */
    public List<EnterpressInfo> getApplyingEnterpriseDataByPager(Pager pager);

    /**
     * 获取开户申请中的企业信息分页数据2
     * 获取分页数据总条数用于计算总页码
     * */
    public Integer getApplyingEnterpriseDataCounts(Pager pager);

    /**
     * 审核开户状态，设置开户
     * @param user_id 要修改开通的账户id
     * @return errer = 0 执行成功
     * */
    public Integer CheckAccount(EnterpressInfo enterpressInfo);

    /**
     * 根据用户id获取企业碳资产数据
     * */
    public EnterpressInfo getEnterprisePropertyData(EnterpressInfo enterpressInfo);
}
